using System;

namespace Refix.RepositoryBrowser.Models
{
    public interface IRepositoryModel {
        event EventHandler RepositoryChanged;
        event EventHandler<RepositoryItemEventArgs> RepositoryItemAdded;
        event EventHandler<RepositoryItemEventArgs> RepositoryItemRemoved;
        event EventHandler<RepositoryItemEventArgs> RepositoryItemSelected;
        event EventHandler<ValueEventArgs<string>> StatusReported;
        event EventHandler<ValueEventArgs<string>> ErrorReported;

        RepositoryItem Repository { get; set; }
        RepositoryItem SelectedItem { get; set; }
        void AddRepositoryItem(RepositoryItem parent, RepositoryItem child);
        void RemoveRepositoryItem(RepositoryItem parent, RepositoryItem child);
        void ReportStatus(string status);
        void ReportError(string message);
    }
}